﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.Classes;
using System.Data.SqlClient;

//using GestorDeFlotasDesktop.ValidarHelp;

namespace GestorDeFlotasDesktop.AbmTurno
{
    public partial class frmNuevoTurno : Form
    {
        public frmNuevoTurno()
        {
            InitializeComponent();
        }
        private int codigo;
        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtInicio.Text = "";
            txtFin.Text = "";
            txtDesc.Text = "";
            txtFicha.Text = "";
            txtBandera.Text = "";
        }
        public void cargarModificar(Turno oTurno)
        {
            btnGuardar.Visible = false;
            button1.Visible = true;
            codigo = oTurno.intCodigo;
            txtDesc.Text = oTurno.strDescripcion;
            txtFicha.Text = Convert.ToString(oTurno.dblValorFicha);
            txtBandera.Text = Convert.ToString(oTurno.dblValorBandera);
            txtFin.Text = Convert.ToString(oTurno.intHoraFin);
            txtInicio.Text = Convert.ToString(oTurno.intHoraInicio);
            chkHabilitado.Checked = oTurno.blnHabilitado;
        }
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            int result;

            if (!camposValidados())
            {
                return;
            }

            SqlInterface.Conectar();

            List<SqlParameter> ParameterList = new List<SqlParameter>();
            ParameterList.Add(new SqlParameter("@inicio", Convert.ToInt32(txtInicio.Text)));
            ParameterList.Add(new SqlParameter("@fin", Convert.ToInt32(txtFin.Text)));
            ParameterList.Add(new SqlParameter("@desc", txtDesc.Text));
            ParameterList.Add(new SqlParameter("@ficha", Convert.ToDecimal(txtFicha.Text)));
            ParameterList.Add(new SqlParameter("@bandera", Convert.ToDecimal(txtBandera.Text)));

            try
            {
                result = SqlInterface.ExecuteNonQuery("SQUIRTLE.spAltaTurno", CommandType.StoredProcedure, ParameterList);
            }
            catch (SqlException sqlEx)
            {
                MessageBox.Show(sqlEx.Message);
                SqlInterface.Desconectar();
                return;
            }

            if (result == 1)
            {
                Turnos oTurnos = new Turnos();
                SqlInterface.Desconectar();
                SqlInterface.Conectar();
                result = oTurnos.getVerificarTurnos();
                if (result == 24)
                {
                    SqlInterface.Desconectar();
                    this.Close();
                    return;
                }
                else
                {
                    result = 24 - result;
                    MessageBox.Show("Faltan cubrir " + result + " horas.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            SqlInterface.Desconectar();
            txtInicio.Text = "";
            txtFin.Text = "";
            txtFicha.Text = "";
            txtBandera.Text = "";
            txtDesc.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int result;

            if (!camposValidados())
            {
                return;
            }
            SqlInterface.Conectar();

            List<SqlParameter> ParameterList = new List<SqlParameter>();
            ParameterList.Add(new SqlParameter("@codigo", codigo));
            ParameterList.Add(new SqlParameter("@inicio", Convert.ToInt32(txtInicio.Text)));
            ParameterList.Add(new SqlParameter("@fin", Convert.ToInt32(txtFin.Text)));
            ParameterList.Add(new SqlParameter("@desc", txtDesc.Text));
            ParameterList.Add(new SqlParameter("@ficha", Convert.ToDecimal(txtFicha.Text)));
            ParameterList.Add(new SqlParameter("@bandera", Convert.ToDecimal(txtBandera.Text)));
            ParameterList.Add(new SqlParameter("@habilitado", chkHabilitado.Checked));

            try
            {
                result = SqlInterface.ExecuteNonQuery("SQUIRTLE.spModificarTurno", CommandType.StoredProcedure, ParameterList);
            }
            catch (SqlException sqlEx)
            {
                MessageBox.Show(sqlEx.Message);
                SqlInterface.Desconectar();
                return;
            }

            if (result == 1)
            {
                MessageBox.Show("El turno ha sido guardado satisfactoriamente.");
                btnLimpiar_Click(sender, e);
                Turnos oTurnos = new Turnos();
                SqlInterface.Desconectar();
                SqlInterface.Conectar();
                result = oTurnos.getVerificarTurnos();
                if (result == 24)
                {
                    SqlInterface.Desconectar();
                    this.Close();
                    return;
                }
                else
                {
                    result = 24 - result;
                    MessageBox.Show("Faltan cubrir " + result + " horas.", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            SqlInterface.Desconectar();
            txtInicio.Text = "";
            txtFin.Text = "";
            txtFicha.Text = "";
            txtBandera.Text = "";
            txtDesc.Text = "";
            this.Close();
        }

        private void frmNuevoTurno_Load(object sender, EventArgs e)
        {

        }

        bool camposValidados()
        {
            if (txtInicio.Text == "" | txtFin.Text == "" | txtFicha.Text == "" | txtBandera.Text == "" | txtDesc.Text == "")
            {
                MessageBox.Show("Todos los campos deben estar completos.");
                return false;
            }

            if (!ValidarHelpers.IsPrecio(txtFicha.Text) || !ValidarHelpers.IsPrecio(txtBandera.Text))
            {
                MessageBox.Show("Los campos 'Valor Ficha' y 'Valor Bandera' deben ser decimales.");
                return false;
            }

            if (Convert.ToInt32(txtInicio.Text) >= Convert.ToInt32(txtFin.Text))
            {
                MessageBox.Show("El horario de inicio no puede ser mayor o igual al de fin.");
                return false;
            }

            return true;
        }
    }
}
